#include <iostream>
#include <string>

using namespace std;

// 使用引用 传递参数
void func_1(int &val_1, int &val_2)
{
    val_1 += val_2;
}
// 使用赋值 传递参数    拷贝  需要去创建一片 和 数据同等大小的 栈空间    创建副本
void func_2(int val_1, int val_2)
{
    val_1 += val_2;
}

// 使用指针 传递参数
void func_3(int *val_1, int *val_2)
{
    (*val_1) += (*val_2);
}

int main(int argc, char const *argv[])
{
    int val_1 = 20;
    int val_2 = 20;

    func_1(val_1, val_2);
    cout << "func_1 == val_1 + val_2 = " << val_1 << endl;
    
    val_1 = 20;
    val_2 = 20;
    func_2(val_1, val_2);
    cout << "func_3 == val_1 + val_2 = " << val_1 << endl;

    val_1 = 20;
    val_2 = 20;
    func_3(&val_1, &val_2);
    cout << "func_3 == val_1 + val_2 = " << val_1 << endl;

    return 0;
}
